#ifndef CONFIG_H
#define CONFIG_H
 

//constantes
#define LARGEUR_PIECE_STANDARD 10
#define LONGUEUR_PIECE_STANDARD 10
#define TIMEOUT_ARRIVEE_PIECE 5
#define TAUX_ERREUR 40 //taux d'erreur pour la dimension des pieces, en pourcentage
#define CAPACITE_CARTON 10 //nombre de pieces par carton
#define CAPACITE_PALETTE 10 //nombre de cartons par palette
#define TAILLE_MESSAGE_IHM 114

//liste des messages standards
typedef enum {
	ERR_TAUX_PIECES_DEFECTUEUSES,
	ERR_PALETTES_EN_PANNE,
	ERR_FILM_PLASTIQUE_EN_PANNE, 
	ERR_IMPRIMANTE_EN_PANNE,
	ERR_BOUTON_ARRET_URGENCE,
	ERR_COMMANDE_NON_PRETE,
	ERR_FILE_ATTENTE_PLEINE,
	ERR_PIECE_ABSENTE 
	} TYPE_ERREUR;


//variables globales
#define TAILLE_PALETTE 20
#define MAX_PALETTES 200
	


//ressources
int capteurPalette;//0: Palette presente, 1:Palette absente
int capteurCarton;//0: carton present, 1:carton absent
int clapet; //0: ferme, 1: ouvert
int etatImprimante; //0: imprimante OK, 1: imprimante en panne
int capteurFilmPlastique;//0: film present, 1:film absent
int conditionnementLot;
 
// structures
typedef enum {
	LOG_ERREUR, 
	LOG_NORMAL, 
	LOG_EXIT, 
	MESS_ERREUR
	} TYPE;

typedef enum  {
	PIECETYPE_A=1, 
	PIECETYPE_B=2
	} TYPEPIECE;

typedef enum {
	MESSIHM_ERREUR = 0, 
	MESSIHM_REQUETE = 1, 
	MESSIHM_REPONSE = 2, 
	MESSIHM_INFORMATION = 3
	} TYPEMESSAGEIHM;


typedef struct
{
	int codeOperateur;
	int numeroLot; //-1 : lot de fin
	int nombrePalettes;
	int piecesDefectueusesMax;
	TYPEPIECE typePieces;
}MESSAGE_LOT;

typedef struct
{
	TYPE type;
	TYPE_ERREUR type_erreur;
	char message[100];
	int min;
	int h;
	int jour;
	int mois;
	int annee;
	int sec;
} MESSAGE_LOG_ERR;

/* La taille du carton est de 10 pi�ces */
typedef struct 
{
	int id; //TODO : on a vraiment besoin d'un ID pour le carton??
	int numLot;
	int nbRebut; //TODO : on en a besoin?
	TYPEPIECE type;
	int min;
	int h;
	int jour;
	int mois;
	int annee;
	int sec;
} CARTON;

/* Definition d'une palette */
typedef struct
{
	int id;
	int numLot;
	TYPEPIECE type;
	int nbCartons;
	int min;
	int h;
	int jour;
	int mois;
	int annee;
	int sec;
} PALETTE;


PALETTE* paletteTypeA[MAX_PALETTES];
PALETTE* paletteTypeB[MAX_PALETTES];


typedef struct
{
	int id;					//2   octet
	TYPEMESSAGEIHM type;	//1   octet
	int typeObjet;			//2   octet
	int idObjet;			//2   octet
	char message[100];		//100 octet
	int heures;  			//2   octet
	int minutes; 			//2   octet
	int secondes;			//2   octet
}MESSAGE_IHM; //Taille totale: 113+1 (\0) = 114


#endif


